import router from './router'
import { getToken } from './utils/auth'
import { Message } from 'element-ui'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import store from './store'

// 白名单，不需要登录也可以访问的页面
const whiteList = ['/404', '/login']
// 导航守卫
router.beforeEach(async (to, from, next) => {
  NProgress.start()
  const token = getToken()
  if (token) {
    // 有token
    // 证明userinfo里面没有内容
    // 但userinfo本来就是空对象，是存在的，所以要判断里面的内容存不存在
    if (!store.getters.userInfo.username) {
      const userInfo = await store.dispatch('user/getUserInfo')
      // console.log(userInfo);
      // 调用方法，获取员工对应的权限路由
      const newRoutes = await store.dispatch(
        'permission/set_Routes',
        userInfo.roles.menus
      )
      // 手动添加动态路由
      router.addRoutes([
        ...newRoutes,
        { path: '*', redirect: '/404', hidden: true }
      ])
      // 转个圈圈，给动态添加路由争取时间
      next(to.path)
      // console.log(newRoutes);
    } else {
      next()
    }

    to.path === '/login'
      ? (next('/'), NProgress.done(), Message.info('您已登录，请直接去首页'))
      : next()
  } else {
    // 没有token
    // 从哪个页面跳转去登录页，登陆完成后就要去哪一个页面，就是to.path
    whiteList.includes(to.path)
      ? next()
      : (Message.info('你还未登录，请先登录'),
        next(`/login?_redirect=${to.path}`))
  }
})

router.afterEach((to, from) => {
  NProgress.done()
})
